﻿using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsFormsApplication1
{
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration; 



    class AccessRead
    {
            /// <summary>
            /// 连接数据库字符串
            /// </summary>
            private string connectionString;

            /// <summary>
            /// 存储数据库连接（保护类，只有由它派生的类才能访问）
            /// </summary>
            protected OleDbConnection Connection;

            /// <summary>
            /// 构造函数：数据库的默认连接
            /// </summary>
            public AccessRead()
            {
                string connStr;
                connStr = "football.mdb";
                // connStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString(); //从web.config配置中读取
                connectionString = connStr;
                //connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Request.PhysicalApplicationPath + connStr;
                // connectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString();
                //
                Connection = new OleDbConnection(connectionString);
            }

            /// <summary>
            /// 构造函数：带有参数的数据库连接
            /// </summary>
            /// <param name="newConnectionString"></param>
            public AccessRead(string newConnectionString)
            {
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + newConnectionString;
                //connectionString = newConnectionString;
                Connection = new OleDbConnection(connectionString);
            }

            /// <summary>
            /// 获得连接字符串
            /// </summary>
            public string ConnectionString
            {
                get
                {
                    return connectionString;
                }
            }

            /// <summary>
            /// 执行SQL语句没有返回结果，如：执行删除、更新、插入等操作
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns>操作成功标志</returns>
            public int ExeSQL(string strSQL)
            {
                bool resultState = false;
                int i = 0;
                Connection.Open();
                OleDbTransaction myTrans = Connection.BeginTransaction();
                OleDbCommand command = new OleDbCommand(strSQL, Connection, myTrans);

                try
                {
                    i=command.ExecuteNonQuery();
                    myTrans.Commit();
                    resultState = true;
                }
                catch
                {
                    i = -1;
                    myTrans.Rollback();
                    resultState = false;
                }
                finally
                {
                    Connection.Close();
                }
                return i;
            }

            /// <summary>
            /// 执行SQL语句返回结果到DataReader中
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns>dataReader</returns>
            private OleDbDataReader ReturnDataReader(string strSQL)
            {
                Connection.Open();
                OleDbCommand command = new OleDbCommand(strSQL, Connection);
                OleDbDataReader dataReader = command.ExecuteReader();
                Connection.Close();

                return dataReader;
            }

            /// <summary>
            /// 执行SQL语句返回结果到DataSet中
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns>DataSet</returns>
            public DataSet ReturnDataSet(string strSQL)
            {
                Connection.Open();
                DataSet dataSet = new DataSet();
                try
                {
                    OleDbDataAdapter OleDbDA = new OleDbDataAdapter(strSQL, Connection);
                    OleDbDA.Fill(dataSet, "objDataSet");
                }
                catch { }
                Connection.Close();
                return dataSet;
            }

            /// <summary>
            /// 执行一查询语句，同时返回查询结果数目
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns>sqlResultCount</returns>
            public int ReturnSqlResultCount(string strSQL)
            {
                int sqlResultCount = 0;

                try
                {
                    Connection.Open();
                    OleDbCommand command = new OleDbCommand(strSQL, Connection);
                    OleDbDataReader dataReader = command.ExecuteReader();

                    while (dataReader.Read())
                    {
                        sqlResultCount++;
                    }
                    dataReader.Close();
                }
                catch
                {
                    sqlResultCount = 0;
                }
                finally
                {
                    Connection.Close();
                }
                return sqlResultCount;
            }
        

    }
}
